package com.zoe.onelink.annotation.mybatis;

import com.zoe.onelink.annotation.data.encryptor.IEncryptor;
import com.zoe.onelink.annotation.data.encryptor.enumeration.Algorithm;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * <p>标题: 加密/解密字段</p>
 * <p>描述: 查询时根据算法进行解密,更新或插入时根据算法进行加密</p>
 * <p>版权: Copyright (c) 2022</p>
 * <p>公司: 智业软件股份有限公司</p>
 *
 * @version: 1.0
 * @author: ruansheng
 * @date: 2022-10-14
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})
public @interface EncryptField {

    /**
     * 加密算法,默认使用SM2国密算法
     */
    Algorithm algorithm();

    /**
     * 手动指定加密器
     */
    Class<? extends IEncryptor> customEncryptor() default IEncryptor.class;

}
